
//闭包,这里把两个参数拆分到两个函数里，直接写在一个函数里也是可以的。
const promisic = function (func) {
    return function (params = {}) {
        return new Promise((resolve, reject) => {
            const args = Object.assign(params, {
                success: (res) => {
                    resolve(res)
                },
                fail: (error) => {
                    reject(error)
                }
            })
            func(args)
        })
    }
}

const combination = function (arr, size) {
    let r = [];
    function _(t, arr, size) {
        if (size === 0) {
            r[r.length] = t
            return
        }
        for (let i = 0, l = arr.length - size; i <= l; i++) {
            let b = t.slice() //  生成新的数组对象，b和t引用的是不同的对象
            b.push(arr[i])  // 0  1
            _(b, arr.slice(i + 1), size - 1)
        }
    }
    _([], arr, size)
    return r
};

export {
    promisic,
    combination
}